package com.chanzany.principle.dependenceInversion;

public class DependenceInversion {
    public static void main(String[] args) {
        new Person().receive(new Email());
    }
}

class Email{
    public String getInfo(){return "email: hello world";}
}

/**
 * 完成Person接收消息的功能
 * 方式1：
 * 简单，但是如果我们获取的对象是微信、短信等等，则需要新增对应的接收方法
 * 解决思路：引入一个抽象的接口IReceiver，表示接收者，这样Person类和IReceiver接口发生依赖注入，
 *  并让Email,WeChat等各自实现IReceiver接口，利用面向对象的多态，就可以避免新增额外的接收方法
 */
class Person{
    public void receive(Email email){
        System.out.println(email.getInfo());
    }
}
